Many business applications implement rule-based systems to model problems of storing and retrieving fact data in a form of attribute-based rules. Rules used by business applications of a business entity are stored, and then, as input data sets are entered, the rule attributes are searched for a match to provide results. A searchable rule can have any number of attributes of variable formats (e.g., strings, numbers, and dates), but typically sets of rules share similar attributes. A collection of rules and their attributes are storable as a multi-dimensional matrix structure, where attributes define the dimensions of the matrix.
A business entity can have rules of varying numbers and types of attributes, depending upon needs of the applications associated with the rules. In the past, a business entity could define dynamic matrices to store and provide these rules of varying numbers and types of attributes. But, the actual database tables storing such rule matrices would have a fixed number of columns to store the attributes. If the fixed number of columns of the storage table is too low, the database table cannot adequately capture all the attributes of complex, multi-dimensional rules. But if the number of columns of the storage table is too high, space can be wasted by allocating a large portion of storage for extra attributes (or dimensions) that are not used for a majority of the rules stored in the table. An additional issue with typical rule attribute database tables is that the table columns are of a fixed data type, so a table can only model a fixed number of attributes of a given format. For example, a rule attribute table could have a maximum of 30 attributes per table: 10 strings, 10 numbers, and 10 dates. Such limitations of storage of rule attribute types also limits the nature and types of rules that can be used by a business entity and its business applications.
It is therefore desirable that a rules-based decision-making system provide dynamic matrices for storage of rules that permit rules to be of any number of attributes and flexible enough to specify that any attribute dimension be of any data type. It is further desirable that the rules data be stored in an efficient manner in database tables so as to not waste unnecessary space and to also support fast searching of rule attributes across large volumes of rules data.